4733. Делится ли на 2, 4 и 8?

 

Дано неотрицательное целое число. Проверить, делится ли оно на 2, на 4 и на 8.

 

Вход. Одно неотрицательное целое число, содержащее не более 100 цифр.

 

Выход. В первой строке выведите Yes, если число делится на 2, иначе выведите No.

Во второй строке выведите Yes, если число делится на 4, иначе выведите No.

В третьей строке выведите Yes, если число делится на 8, иначе выведите No.

 

Пример входа 1

Пример выхода 1

16

Yes

Yes

Yes

 

 

Пример входа 2

Пример выхода 2

7135618

Yes

No

No

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Число делится на 2, если его последняя цифра делится на 2.

Число делится на 4, если число составленное из его двух последних цифр делится на 4.

Число делится на 8, если число составленное из его трех последних цифр делится на 8.

Эти три правила можно объединить в одно: составим число из трех последних цифр заданного. Если оно делится на 2, 4, 8, то и исходное число делится на 2, 4, 8.

 

Реализация алгоритма

Входное число длинное, читаем его в символьный массив s.

 

#define MAX 110

char s[MAX];

 

Читаем число, вычисляем его длину len (количество цифр).

 

gets(s); len = strlen(s);

 

В переменную n заносим число, составленное из трех последних цифр исходного числа. Исходное число может содержать менее трех цифр (len может быть меньше 3).

 

len -= 3;

if (len < 0) len = 0;

sscanf(s+len,"%d",&n);

 

В зависимости от делимости n на 2, 4, 8 выводим ответ.

 

if (n % 2 == 0) printf("Yes\n"); else printf("No\n");

if (n % 4 == 0) printf("Yes\n"); else printf("No\n");

if (n % 8 == 0) printf("Yes\n"); else printf("No\n");